{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Análisis unidimensional\n",
" \n",
"\n",
"## Objetivo\n",
"\n",
"Como ya se dijo anteriormente, el análisis unidimensional consiste en analizar individualmente a las variables (columnas de un DataFrame) para conocer sus características y su naturaleza. Para ello, se emplea mayormente gráficos, aunque tambien se pueden calcular valores estadísticos como el promdio, la mediana, la kurtosis, entre muchos otros.\n",
"\n",
"## Ejemplo de como graficar\n",
"\n",
"- [Ejemplo visualización](#8)\n",
"\n",
"## Técnicas de análisis\n",
"\n",
"1. [DataFrame.describe()](#3)\n",
"2. [Indicadores de tendencia central](#1)\n",
"3. [Indicadores de dispersión](#2)\n",
"4. [Gráficos de distribución](#4)\n",
"5. [Gráficos de comparación](#5)\n",
"6. [Gráficos de composición](#6)\n",
"7. [Utilizando Groupby](#7)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Importar lbrerías y cargar datos\n",
"__[Fuente de los datos](https://archive.ics.uci.edu/ml/datasets/Forest+Fires)__"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
X
\n",
"
Y
\n",
"
month
\n",
"
day
\n",
"
FFMC
\n",
"
DMC
\n",
"
DC
\n",
"
ISI
\n",
"
temp
\n",
"
RH
\n",
"
wind
\n",
"
rain
\n",
"
area
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
7
\n",
"
5
\n",
"
mar
\n",
"
fri
\n",
"
86.2
\n",
"
26.2
\n",
"
94.3
\n",
"
5.1
\n",
"
8.2
\n",
"
51
\n",
"
6.7
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
1
\n",
"
7
\n",
"
4
\n",
"
oct
\n",
"
tue
\n",
"
90.6
\n",
"
35.4
\n",
"
669.1
\n",
"
6.7
\n",
"
18.0
\n",
"
33
\n",
"
0.9
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
2
\n",
"
7
\n",
"
4
\n",
"
oct
\n",
"
sat
\n",
"
90.6
\n",
"
43.7
\n",
"
686.9
\n",
"
6.7
\n",
"
14.6
\n",
"
33
\n",
"
1.3
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
"
\n",
"
3
\n",
"
8
\n",
"
6
\n",
"
mar
\n",
"
fri
\n",
"
91.7
\n",
"
33.3
\n",
"
77.5
\n",
"
9.0
\n",
"
8.3
\n",
"
97
\n",
"
4.0
\n",
"
0.2
\n",
"
0.0
\n",
"
\n",
"
\n",
"
4
\n",
"
8
\n",
"
6
\n",
"
mar
\n",
"
sun
\n",
"
89.3
\n",
"
51.3
\n",
"
102.2
\n",
"
9.6
\n",
"
11.4
\n",
"
99
\n",
"
1.8
\n",
"
0.0
\n",
"
0.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" X Y month day FFMC DMC DC ISI temp RH wind rain area\n",
"0 7 5 mar fri 86.2 26.2 94.3 5.1 8.2 51 6.7 0.0 0.0\n",
"1 7 4 oct tue 90.6 35.4 669.1 6.7 18.0 33 0.9 0.0 0.0\n",
"2 7 4 oct sat 90.6 43.7 686.9 6.7 14.6 33 1.3 0.0 0.0\n",
"3 8 6 mar fri 91.7 33.3 77.5 9.0 8.3 97 4.0 0.2 0.0\n",
"4 8 6 mar sun 89.3 51.3 102.2 9.6 11.4 99 1.8 0.0 0.0"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"# Cargarlos desde la web\n",
"data = pd.read_csv('http://www.dsi.uminho.pt/~pcortez/forestfires/forestfires.csv')\n",
"\n",
"data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## DataFrame.describe()\n",
"\n",
"\n",
"Llamando a la función`describe()` de _Pandas_ se obtiene una matriz la cual tiene varios indicadores para cada una de las columnas. Con estos indicaroes se puede tener una visión general de los datos."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
X
\n",
"
Y
\n",
"
month
\n",
"
day
\n",
"
FFMC
\n",
"
DMC
\n",
"
DC
\n",
"
ISI
\n",
"
temp
\n",
"
RH
\n",
"
wind
\n",
"
rain
\n",
"
area
\n",
"
month_number
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517
\n",
"
517
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
517.000000
\n",
"
\n",
"
\n",
"
unique
\n",
"
NaN
\n",
"
NaN
\n",
"
12
\n",
"
7
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
top
\n",
"
NaN
\n",
"
NaN
\n",
"
aug
\n",
"
sun
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
freq
\n",
"
NaN
\n",
"
NaN
\n",
"
184
\n",
"
95
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
NaN
\n",
"
\n",
"
\n",
"
mean
\n",
"
4.669246
\n",
"
4.299807
\n",
"
NaN
\n",
"
NaN
\n",
"
90.644681
\n",
"
110.872340
\n",
"
547.940039
\n",
"
9.021663
\n",
"
18.889168
\n",
"
44.288201
\n",
"
4.017602
\n",
"
0.021663
\n",
"
12.847292
\n",
"
7.475822
\n",
"
\n",
"
\n",
"
std
\n",
"
2.313778
\n",
"
1.229900
\n",
"
NaN
\n",
"
NaN
\n",
"
5.520111
\n",
"
64.046482
\n",
"
248.066192
\n",
"
4.559477
\n",
"
5.806625
\n",
"
16.317469
\n",
"
1.791653
\n",
"
0.295959
\n",
"
63.655818
\n",
"
2.275990
\n",
"
\n",
"
\n",
"
min
\n",
"
1.000000
\n",
"
2.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
18.700000
\n",
"
1.100000
\n",
"
7.900000
\n",
"
0.000000
\n",
"
2.200000
\n",
"
15.000000
\n",
"
0.400000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
1.000000
\n",
"
\n",
"
\n",
"
25%
\n",
"
3.000000
\n",
"
4.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
90.200000
\n",
"
68.600000
\n",
"
437.700000
\n",
"
6.500000
\n",
"
15.500000
\n",
"
33.000000
\n",
"
2.700000
\n",
"
0.000000
\n",
"
0.000000
\n",
"
7.000000
\n",
"
\n",
"
\n",
"
50%
\n",
"
4.000000
\n",
"
4.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
91.600000
\n",
"
108.300000
\n",
"
664.200000
\n",
"
8.400000
\n",
"
19.300000
\n",
"
42.000000
\n",
"
4.000000
\n",
"
0.000000
\n",
"
0.520000
\n",
"
8.000000
\n",
"
\n",
"
\n",
"
75%
\n",
"
7.000000
\n",
"
5.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
92.900000
\n",
"
142.400000
\n",
"
713.900000
\n",
"
10.800000
\n",
"
22.800000
\n",
"
53.000000
\n",
"
4.900000
\n",
"
0.000000
\n",
"
6.570000
\n",
"
9.000000
\n",
"
\n",
"
\n",
"
max
\n",
"
9.000000
\n",
"
9.000000
\n",
"
NaN
\n",
"
NaN
\n",
"
96.200000
\n",
"
291.300000
\n",
"
860.600000
\n",
"
56.100000
\n",
"
33.300000
\n",
"
100.000000
\n",
"
9.400000
\n",
"
6.400000
\n",
"
1090.840000
\n",
"
12.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" X Y month day FFMC DMC DC \\\n",
"count 517.000000 517.000000 517 517 517.000000 517.000000 517.000000 \n",
"unique NaN NaN 12 7 NaN NaN NaN \n",
"top NaN NaN aug sun NaN NaN NaN \n",
"freq NaN NaN 184 95 NaN NaN NaN \n",
"mean 4.669246 4.299807 NaN NaN 90.644681 110.872340 547.940039 \n",
"std 2.313778 1.229900 NaN NaN 5.520111 64.046482 248.066192 \n",
"min 1.000000 2.000000 NaN NaN 18.700000 1.100000 7.900000 \n",
"25% 3.000000 4.000000 NaN NaN 90.200000 68.600000 437.700000 \n",
"50% 4.000000 4.000000 NaN NaN 91.600000 108.300000 664.200000 \n",
"75% 7.000000 5.000000 NaN NaN 92.900000 142.400000 713.900000 \n",
"max 9.000000 9.000000 NaN NaN 96.200000 291.300000 860.600000 \n",
"\n",
" ISI temp RH wind rain \\\n",
"count 517.000000 517.000000 517.000000 517.000000 517.000000 \n",
"unique NaN NaN NaN NaN NaN \n",
"top NaN NaN NaN NaN NaN \n",
"freq NaN NaN NaN NaN NaN \n",
"mean 9.021663 18.889168 44.288201 4.017602 0.021663 \n",
"std 4.559477 5.806625 16.317469 1.791653 0.295959 \n",
"min 0.000000 2.200000 15.000000 0.400000 0.000000 \n",
"25% 6.500000 15.500000 33.000000 2.700000 0.000000 \n",
"50% 8.400000 19.300000 42.000000 4.000000 0.000000 \n",
"75% 10.800000 22.800000 53.000000 4.900000 0.000000 \n",
"max 56.100000 33.300000 100.000000 9.400000 6.400000 \n",
"\n",
" area month_number \n",
"count 517.000000 517.000000 \n",
"unique NaN NaN \n",
"top NaN NaN \n",
"freq NaN NaN \n",
"mean 12.847292 7.475822 \n",
"std 63.655818 2.275990 \n",
"min 0.000000 1.000000 \n",
"25% 0.000000 7.000000 \n",
"50% 0.520000 8.000000 \n",
"75% 6.570000 9.000000 \n",
"max 1090.840000 12.000000 "
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_description = data.describe(include='all')\n",
"data_description"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualización\n",
"\n",
"\n",
"Esto es solamente un ejemplo de la manipulación de las librerías para graficar. En la celda de abajo, se grafica la distribución de los valores de la *temperatura* y se añaden líneas al gráfico las cuales muestran los indicares de tendencia central así como los límites de los valores atípicos.\n",
"\n",
"Para graficar los datos se utilizan estas dos librerías:\n",
"\n",
"- [Seaborn](https://seaborn.pydata.org/generated/seaborn.kdeplot.html)\n",
"\n",
"- [matplotlib](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.axvline.html?highlight=axvline)\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEJCAYAAABohnsfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA3XklEQVR4nO3de1RTV74H8G9IQkh4BWIS3og8RUWsVCnt0LEj0oqpjrYzTnulna5xpvfe6lzWHTq2PqbttLUPOox96MzYx9y2OtXaCqW1iNraOmJ9oCgqIPgElCSENyTkwbl/0EapEALm5CTh91mra5nshP3NaQ4/zj5n78NjGIYBIYQQYgcvrgMQQghxH1Q0CCGE2I2KBiGEELtR0SCEEGI3KhqEEELsRkWDEEKI3ahoEEIIsZuA6wBsaGvrQX+/a0w/kcn8oNN1c5rh2t83AgBCf/dfnOawxRW2ky2//e2vAQD/+Md7rPXx7uktAIDHpj48bH+O3k7O+FxccdZ3yh32L1tkMj+0tfUgKMjXrtd7ZNHo72dcpmgA4DyLsa3dJXKMxJXzNTc3A2A3Y7uh09qHrf4cmcEZn4tLzvhc7rJ/2TKa7DQ8RQghxG5UNAghhNiNigYhhBC7UdEghBBiNyoahBBC7EZFgxBCiN2oaBBCCLGbR87TIMQTmC39KD18GVUXWtHZa0SwvwhpySFIi58AsYh2XcIN+uYR4mIYhkF7dx+07XpUX27H5Ogg+PoI0dnTh8pzWny8rw5LfxaHjKmhXEcl4xAVDUJcCMMA7+6qRmtnHxRSMe6bHWVtC5VJMDslHOcutuDTby/gUnMXfvWzePB4PA4Tk/GGzmkQ4iIYAFd1PWjS9kARJIZQwB/ydYogCf4jKwHVl9qw/et654Yk4x4VDUJcREu7HkaTBYszJ8FrhKMHH28BFmdOwvFzWuw91uCkhIRQ0SDEJZyo06Kjx4gJgT4Q8O3bLcUiARbdNQnF/76IS82dLCckZAAVDUI41tVrxP99WQNZgA/4XqPbJYP8RfjZzAhs2nkafSYLSwkJuY6KBiEce393LZKigyASDn0OYyRJUUGYIBWj5OBFBycj5GZUNAjh0JlLrbhwtRN3Tbu1y2fnzAjHN5VX0ah13RtZEc/AatEoKSnB/PnzkZWVhS1bttzUXl1djSVLliA7OxurV6+G2WyGTqfDwoULrf/dc889mDFjBpsxCeGE2dKPLWXn8NPUMLvPYwzHTyzEHVNC8K+9dQ5KR8jQWCsaarUahYWF2Lp1K4qLi7Ft2zbU1w++PDA/Px9r167F7t27wTAMtm/fDplMhuLiYhQXF2Pnzp0IDw/Hc889x1ZMQjjzTWUTxCI+4sIDHfLzpsdNgKatF6cv6hzy8wgZCmtFo7y8HOnp6ZBKpZBIJMjOzkZpaam1vampCQaDAampqQCAxYsXD2oHgE8++QRisRgqlYqtmIRwwmiy4PPyy/hJSpjDJufxvXi4a1ootu2rRz/jvrceJa6NtRnhGo0Gcrnc+lihUODUqVPDtsvlcqjVautji8WCTZs2YdOmTaPuWybzG2Nqdsjl/pz23+wtcIkcI3HlfMLvT1I7KuPO/fWIVPojadIE63MC9cDfcFKpBALB9X//2FDP/WBWoBjH61pwvrkbGSlhI+Zw9OdyNc74XO6yf9kymt+ZrBUNZoi/dG78i2qk9gMHDiAmJgaJiYmj7lun63aZm7zL5f7Qars4zWAymgGA8xy2uMJ2ssX0/eWsjshoNFnw8b5zWJIZi/b2XuvzZnM/AKC9vXfQv28klUpueu7H0hLl+GDXWcSF+I14FOPIz+VqnPWdcof9yxa53B86XbfdhYO14SmlUomWlhbrY41GA4VCMWy7Vqsd1L53717Mnz+frXiEcObfVdcQGuwLRZCYlZ8fFx4Ik7kfJ8/TuQ3ieKwVjYyMDBw6dAitra3Q6/UoKytDZmamtT08PBwikQgVFRUAgKKiokHtlZWVSEtLYyseIZyw9Pfjy++uIC1JPvKLx4jH42HWZCW+KL/EWh9k/GL1SCMvLw+5ublYtGgRFixYgJSUFCxfvhxVVVUAgIKCAqxfvx733Xcf9Ho9cnNzre9vaGhASEgIW/EI4URFrRYSHwEi5Oyed0uMlELXacCFq7S8CHEsVpdGV6lUN135tHnzZuu/k5KSsGPHjiHfe/LkSTajEcKJsqMNuC2BvaOMH3h58XBbghylhy/jv34+jfX+yPhBM8IJcZLLzV1o6TAg3kHzMkYybZIMZy+1obXT4JT+yPhARYMQJ9lX0YDUOBm8vJxz0ySRkI/JE4Pw9Ykmp/RHxgcqGoQ4QY/BhIpaLaZNkjm139S4Cfj25FWYvr+El5BbRUWDECf47owaMaEB8PUROrVfWYAPZAE+qKjVOLVf4rmoaBDCMoZhsP9EE6ZOCuak/+lxE7DveCMnfRPPQ0WDEJZdau5Cb58Z0UpulpmICwuAulWPa7oeTvonnoWKBiEs+7byKqbGBDtsYcLR4vO9MDUmGN9UXuWkf+JZqGgQwiKTuR9HazSYMpGboakfTJskQ/npZjohTm4ZFQ1CWHSyvgWKIDECfL05zRHkL8KEQB+crG8Z+cWE2EBFgxAWHTh1DcnRQVzHAAAkRwfhwCkaoiK3hooGISzp7DWirrEd8ZFSrqMAABIipahr7EBHdx/XUYgbo6JBCEuO1WgQGxYA0fc3OuKat5CPhEgpyk83cx2FuDEqGoSw5NDpZiRGucbQ1A+SJwbhYNU1rmMQN0ZFgxAW6DoMuKbrRUyIa90CNFLuh54+Mxo03VxHIW6KigYhLDhc3YyESCn4fNfaxXg8HpKjg1BORxtkjFzrG02Ih/jurAaJLnIC/MeSo4Px3Vk1+vsZrqMQN0RFgxAH07T1or2rD5EKdu/ON1ayQB9IfASovtLGdRTihqhoEOJgR2s0iI8MdNp9M8YiKUqK787QVVRk9KhoEOJgh8+qkRgh5TqGTUlRQTh+rgUMQ0NUZHRYLRolJSWYP38+srKysGXLlpvaq6ursWTJEmRnZ2P16tUwm80AAI1Gg9/+9rdYtGgRli5disZGWtaZuAd1Wy/au42IkLvm0NQP/CXeUAaJ0a03cx2FuBnWioZarUZhYSG2bt2K4uJibNu2DfX19YNek5+fj7Vr12L37t1gGAbbt28HADz55JOYM2cOioqKsHDhQhQUFLAVkxCHOlajQXyEaw9N/SAhUorOHiPXMYibYa1olJeXIz09HVKpFBKJBNnZ2SgtLbW2NzU1wWAwIDU1FQCwePFilJaWorW1FTU1NVi6dCkAYMmSJfif//kftmIS4lBHvy8a7iAxUooeg4muoiKjImDrB2s0GsjlcutjhUKBU6dODdsul8uhVqvR0NCAsLAwvPjiizh8+DDCwsKwdu3aUfUtk7nW0IBczu0Er2ZvgUvkGIkr5xN+vxSIrYyatl7oOvswLV4xpvkZAvXAe6RSCQSC6//+saGeGwspAB+RAAaTxaW3/a1wxudyl/3LltH8zmStaAx1gu3Gm9AM1242m3H27FmsWLECq1evxscff4xVq1bhgw8+sLtvna7bZf56ksv9odV2cZrBZBwYt+Y6hy2usJ1sMZksAGxvwz1HGxAbFoCuLsOY+jB/f6+L9vbeQf++kVQquem5WyH25qO10+DS236snPWdcof9yxa53B86XbfdhYO14SmlUomWlutr92s0GigUimHbtVotFAoF5HI5fH19MWfOHADAggULBh2hEOKqjtaoERfuHkNTPxCLBOg1mNFroBPixD6sFY2MjAwcOnQIra2t0Ov1KCsrQ2ZmprU9PDwcIpEIFRUVAICioiJkZmYiKioKSqUS33zzDQDg66+/xpQpU9iKSYhDdPYY0aTtwUQXW2tqJF48Hny8+ais13IdhbgJVo808vLykJubi0WLFmHBggVISUnB8uXLUVVVBQAoKCjA+vXrcd9990Gv1yM3NxcA8Oabb+Ltt9/GggUL8P777+PFF19kKyYhDlFZ34KY0AAIXGytKXuIRQIcPqvhOgZxE6yd0wAAlUoFlUo16LnNmzdb/52UlIQdO3bc9L5JkyaN6hwGIVz74d4Z7kgsEuBcQzt6DWZIfFj9lUA8gPv9WUSIi9H3mVHX2IHYMPc6n/EDLx4PUUo/nDxP9w8nI6OiQcgtOnOxFeFyX4i8XeMOfWMRHx6II2fVXMcgboCKBiG3qOKc1m2Hpn4QFxGImivtMBjpKipiGxUNQm6B2dKPqvM6t7vU9sd8vAWIkPvi1Hkd11GIi6OiQcgtqGvsgNTfG/4Sb66j3LK48EAcraGrqIhtVDQIuQXHz2nc9gT4j8VHBOLMxVaYzBauoxAXRkWDkDFiGAaVdS0eUzQkPkKEBEtw+mIr11GIC6OiQcgYNWl7YOkH5FIfrqM4TGxYAI7V0OxwMjwqGoSM0Yk6LWLDAwYtxOnu4iOkOHm+BZb+fq6jEBdFRYOQMTp+rgVxHjI09YMAX28E+nrjXEMH11GIi6KiQcgYtHf3Qd3WiwiFa927xRHiwgNRUUtXUZGhUdEgZAxO1rdgUmgA+G5wW9fRSoiQ4vg57ZD3vCGEigYhY3D8nBaT3HwW+HCCA0Tge/FwRd3NdRTigqhoEDJKfUYLzjV0eGzR4PF4A0NU52iIityMigYho3T2UivCJkjg4+25y4jHhgfieC1dektuRkWDkFE6UadFTIhnHmX8IEzmi45eIzTteq6jEBdDRYOQUehnGJw8r0Osmy9QOBIvLx7iwgJx4hwdbZDBqGgQMgoXr3XCx1uAIH8R11FYNyksECfqqGiQwVgtGiUlJZg/fz6ysrKwZcuWm9qrq6uxZMkSZGdnY/Xq1TCbB9byLyoqwl133YWFCxdi4cKFKCwsZDMmIXY7Udfi9vfOsNfEEH9cbu5Gt97EdRTiQlgrGmq1GoWFhdi6dSuKi4uxbds21NfXD3pNfn4+1q5di927d4NhGGzfvh0AUFVVhVWrVqG4uBjFxcXIy8tjKyYho3LCA264ZC+hwAvRIf6oukD32CDXsVY0ysvLkZ6eDqlUColEguzsbJSWllrbm5qaYDAYkJqaCgBYvHixtb2qqgpFRUW4//778Yc//AEdHbSkAeGeydyPzh4jQmW+XEdxmkmhAXQVFRmEtaKh0Wggl8utjxUKBdRq9bDtcrnc2i6Xy7FixQoUFxcjNDQUzz33HFsxCbFbt96E2LBAeHngLPDhxIYF4MylVpgttIAhGcDaheZDLUFw42qgttrfeust63O/+c1vMHfu3FH1LZO51npAcrk/p/03fz+fgOscI3HlfEIhH90GE1IS5JBKJaz0IVAP/A0nlUogEFz/9485sn9b/Qw8DyiDJVB39iE1QeGwfp3FGd8pd9m/bBnN70zWioZSqcSxY8esjzUaDRQKxaD2lpYW62OtVguFQoGuri588sknePTRRwEMFBeBYHQxdbpu9Pe7xro5crk/tNouTjOYjAMXGHCdwxZX2E62GPrM0BvMmODvjfb2Xlb6MJsH/ppvb+8d9O8bSaUSh/Y/XD83ilL4Yf+xKwgPEjusX2dw1nfKHfYvW+Ryf+h03XYXDtaGpzIyMnDo0CG0trZCr9ejrKwMmZmZ1vbw8HCIRCJUVFQAGLhiKjMzExKJBG+//TZOnjwJAPjwww+RlZXFVkxC7NKjN8HHmw9vAZ/rKE4XGxaIyroWWsCQAGD5SCMvLw+5ubkwmUx44IEHkJKSguXLl2PlypWYNm0aCgoKsGbNGvT09CA5ORm5ubng8/n461//imeeeQYGgwETJ07EK6+8wlZMQuzSrTd59LIhtsilPjD3M7ja0oNwuWsN/RLnY3UvUKlUUKlUg57bvHmz9d9JSUnYsWPHTe9LS0vDzp072YxGiN3Mln70GEwICWbnXIar4/F4A0cb9S1UNAjNCCdkJLVX2iHge4HvNX53l9iwAJyoaxn5hcTjjd+9gBA7HT+ngVg0PoemfhCp8ENTSw+6eo1cRyEco6JBiA0Mw+BEnQ5i7/F3AvxGAr4XJtLscAIqGoTYdEXdDS/ewJIa492k0AAcP0dDVOMd7QmE2HD8nPb7ZdDHzyzw4UwKDcBZmh0+7lHRIMSGinNaxEd49r0z7OUrFkIW4IO6hnauoxAOUdEgZBiadj06evoQNo4WKBzJpLAAnKinIarxjIoGIcM4XqtBfLh0XC1QOJJJYQE4SUVjXLOraKxYsQLl5eVsZyHEpVTUahEbPj7unWEvhVSMPpMFza3srL9FXJ9dRWPevHnYuHEjsrOz8c4776C9vZ3lWIRwq6PHiKaWHkQr3XflUjZYZ4fTbWDHLbuKhkqlwocffoiNGzdCp9PhwQcfRH5+Pk6dOsV2PkI4ceKcFpPCAiDg0wjuj8WE0uzw8czuPaK/vx+XL1/GpUuXYDabIZPJ8Mwzz+DVV19lMx8hnDhao0F8OF01NZRopT+uqLvRa6B7h49Hdq2NUFhYiE8//RSRkZF46KGHsGHDBgiFQvT29mLOnDnIz89nOychTtNjMOHCtU5k3x7JdRSXJBR4IUrph6oLrZidrOQ6DnEyu4pGa2srNm/ejKSkpEHPSyQSvPbaa6wEI4QrlXUtiFb6w1s4vpcOsWVgiEpLRWMcsmt4ymKx3FQwVqxYAQC46667HJ+KEA4dqVbT0NQIYsMCcPpCKyz9NDt8vLF5pPGnP/0JarUaFRUVaG1ttT5vNptx4cIF1sMR4my9BjPONXTgnhkRXEdxaf4SbwT6eaO+sQOJUUFcxyFOZLNoPPDAA6irq0NtbS2ys7Otz/P5fMyYMYP1cIQ4W2W9FlFKP4jG+aq29ogJDUBlXQsVjXHGZtGYNm0apk2bhjvvvBNKJY1dEs93+KwGCRFSrmO4hdiwQOw+egW//Fk811GIE9ksGr///e+xYcMG/OY3vxmyvaSkhJVQhHCh12BCXWM77pkRznUUtxASLIa+zwx1ay+U4/RWuOORzaKxfPlyAMDatWvH9MNLSkqwadMmmEwmPProo3j44YcHtVdXV2PNmjXo7u5GWloann32WQgE1yOdPXsWv/jFL3D69Okx9U/IaBw/N3DVFA1N2eeH2eEn6rS4d3Y013GIk9i8emrq1KkAgFmzZiE0NBSzZs1Ce3s7jhw5gsmTJ9v8wWq1GoWFhdi6dSuKi4uxbds21NfXD3pNfn4+1q5di927d4NhGGzfvt3aptfr8dxzz8FkoglExDm+O9OMhEgp1zHcyiS6d/i4Y9clt+vWrcPmzZtx/vx5PPfcc2hqasLq1attvqe8vBzp6emQSqWQSCTIzs5GaWmptb2pqQkGgwGpqakAgMWLFw9qf+mll/Doo4+O/hMRMgadvUacv9ZJCxSOUrTSH1c03ejW0x9344VdReP06dN45plnsGfPHvz85z/H+vXr0dTUZPM9Go0Gcrnc+lihUECtVg/bLpfLre379u2DwWDAvffeO6oPQ8hYVdRoEBsaAG8BDU2NhlDghWilP6rO073Dxwu7ZoQzDAMvLy8cPHgQjz/+OICB4aOR3vNjPB5vxHatVotNmzbhn//8pz3RhiST+Y35vWyQy7ldKbXZW+ASOUbCZb4jNVrMmhICqXToE7qC7+8RPly7IwjU1/uw1Z8jMzjic02NnYCqy224f47rXUXljO+Uu+xftozmd6ZdRSMqKgrLly9HY2MjZs2ahf/93/9FYmKizfcolUocO3bM+lij0UChUAxqb2m5Phaq1WqhUCiwf/9+tLe3DzppvnDhQmzZsgV+fvZ9MJ2uG/39NxclLsjl/tBquzjNYDKaAYDzHLZwuZ007Xo0aLqwID0K7e1D3yfCbB6Y+TxcuyPc2Mdw/UmlEodmcMTnCg3ywa7yi7h6rQNCgeusCuys75Q77F+2yOX+0Om67S4cdhWN9evXY8+ePZg5cyaEQiHS0tKwaNEim+/JyMjAG2+8gdbWVojFYpSVleHPf/6ztT08PBwikQgVFRWYOXMmioqKkJmZiQcffBAPPvig9XWJiYkoLi6268MQMhbfnWlGUpQUfFoGfUx8fYSQS8WovtyGlFgZ13EIy+zaSyQSCdLS0tDZ2YkzZ84gJSVlxGVElEol8vLykJubi0WLFmHBggVISUnB8uXLUVVVBQAoKCjA+vXrcd9990Gv1yM3N/fWPxEho8AwDMpPN2NydDDXUdxabHgAKmo1XMcgTmDXkcarr76KDz/8EDLZ9b8ieDwe9u3bZ/N9KpUKKpVq0HObN2+2/jspKQk7duyw+TNqa2vtiUjImFy41gmzpR9hMpqcdiviwgOx7at69DMMvHh0T3VPZlfR+PLLL1FWVkZLiRCPc+DkVUyZGDzoIg0yesH+PhB7C3DhaifiaIVgj2bX8FRoaCgVDOJxjCYLjtVoMWUiDU05Ag1RjQ92FY077rgDr7zyCioqKnDmzBnrf4S4s+N1WoTIJAjw9eY6ikeIj5CiolY75OX0xHPYNTz16aefAsCgGdv2nNMgxJXtP3GVjjIcSBkkhtnCoFHbg0iFa82VIo5jV9H46quv2M5BiFOpW3vRpO3GgjtooT1H4fF4iI8IxLFaDRUND2bX8FRPTw+ee+45PPLII2hvb8e6devQ09PDdjZCWPNN5VVMiQmGgOZmOFRCRCCO1dB5DU9m1x7z/PPPw9/fHzqdDiKRCN3d3Vi3bh3b2QhhhdnSj39XXUPKJJqI5mhhE3zRrTfhmo7+qPRUdhWN6upq5OXlQSAQQCwWo6CgANXV1WxnI4QVR2s0mBDog+AAH66jeJyBISopHW14MLuKhpfX4JdZLJabniPEXew52oAZ8RO4juGxEiOlOFxNRcNT2fWb//bbb8err74Kg8GAAwcO4IknnsDs2bPZzkaIw1281on27j7EhtEENLZEyH3R1WukISoPZVfR+MMf/gCJRAJ/f3/89a9/RVJSEp588km2sxHicHuONiA1bgK8vGgGOFt4PB4SIqU4QkcbHmnEorFnzx4sW7YMb7/9NhobG+Hv74/bbrsNIpHIGfkIcZjWTgNOnm+hlVidIDFSiiPV6pFfSNyOzXkaRUVF2LhxI1auXImkpCTweDxUVVXhhRdeQF9fH+bNm+esnITcsr3HGjElRgYfb7umJ5FbED7BF70GMxo13YigORsexebe88EHH+Cf//wnwsLCrM/FxsZi+vTpePrpp6loELeh7zPj21NXsSwrgeso4wKPx0NSlBTfnW3GA4o4ruMQB7I5PGUymQYVjB/ExMSgr6+PtVCEONq+442ICQlAoB8NqzpLUlQQDp9V01pUHsZm0eDz+cO20ReBuIs+owVlRxowO1kx8ouJwyiCxODxeDh/tZPrKMSBaLIF8Xj7K5sQIffFhEAx11HGFR6Ph8nRQThYdY3rKMSBbJ7TqK2txW233XbT8wzDwGg0shaKEEfpM1qw67vLWJw5ieso41JydBA+2HMOD81NgFBAf6N6AptFY8+ePc7KQQgr9lY0IELuB2UQ3c6VC4F+IsgDxTh1XoeZiXKu4xAHsFk0wsPDb+mHl5SUYNOmTTCZTHj00Ufx8MMPD2qvrq7GmjVr0N3djbS0NDz77LMQCAQ4duwYXnzxRZhMJoSHh+Pll19GYCDN4CWj02swY/eRBvzyHrp6h0tJ0VL8u+oqFQ0PwdrxolqtRmFhIbZu3Yri4mJs27YN9fX1g16Tn5+PtWvXYvfu3WAYBtu3bwcAPPXUU3jllVdQUlKCuLg4vPPOO2zFJB7si0OXMCksADJamJBTSVFBqL3Sjs5eGtL2BKwVjfLycqSnp0MqlUIikSA7O3vQnf+amppgMBiQmpoKAFi8eLG1fdeuXYiLi4PJZIJarUZAQABbMYmH0nUY8E3lVdw5NYTrKOOeSMhHXEQgDp1u5joKcQDWioZGo4Fcfv1wVKFQQK1WD9sul8ut7UKhELW1tbj77rtx+PBh5OTksBWTeKiP99cjNX4C/CV0/29XMGViMA6cvEqX6nsA1tZTGOrLwePx7G5PTExEeXk5PvroI+Tl5eGjjz6yu2+ZzLWWLZDL/Tntv/n7ZTO4zjESR+U7e1GHc40d+P0vZ0AkHH6u0WgIvr/yRypl74S6QH29D1v9OTKDMz4XAAQEirG3ohEdfRbERwax2teNnPGdd5f9y5bR/M5krWgolUocO3bM+lij0UChUAxqb2lpsT7WarVQKBTo6+vDgQMHMHfuXADA/fffj5dffnlUfet03ejvd42/aORyf2i1XZxmMBnNAMB5DlsctZ36+xm8sa0Sd00Ngb6nD3oHZAMAs7kfANDe3uugn2i7j+H6k0olDs3gjM/1g+ToIOz8qg6/nj+Z9b4A5+177rB/2SKX+0On67a7cLA2PJWRkYFDhw6htbUVer0eZWVlyMzMtLaHh4dDJBKhoqICwMDiiJmZmRAIBHj22Wdx+vRpAMCXX3455FwRQoby9YkmePGAydHO+2uW2GdqjAzHajTQ95m5jkJuAatHGnl5ecjNzYXJZMIDDzyAlJQULF++HCtXrsS0adNQUFCANWvWoKenB8nJycjNzQWfz0dhYSHWrVsHi8UCpVKJF154ga2YxIO0d/eh6MAF/PKeuEFDncQ1+EuEiArxx+FqNX6aemuX8xPusLpGtEqlgkqlGvTc5s2brf9OSkrCjh07bnpfWloaPv30UzajEQ+0dc85pMTKaLkQFzYtRoavKhpx9/QwKuxuiub1E49QWdeCC1c7kZ5Ml9i6sphQf/QYzLhAixi6LSoaxO3p+8x4f3ctsm6PpPWNXByPx8P0OBn2VTRyHYWMEe1hxO1t+6oO0SF+iFa67yWP48m0GBlO1rfQDHE3RUWDuLWzl1pxsl6Hn06nE6vuQiwSICFSim8qm7iOQsaAigZxW/o+M97dVY2stAiIvB0ziY84x4z4CfiqoglmSz/XUcgoUdEgbmv71/WIkPthUhitgOxuFEESSP28UVGr5ToKGSUqGsQtVV9qxYm6Fvw09eZ72BP3MCNejt1HrnAdg4wSFQ3idvR9Zryzqxrz0iLg483qVCPCorjwQHT0GFHf2MF1FDIKVDSI26FhKc/g5cXDzAQ5vjx8mesoZBSoaBC3Un25jYalPMjUScE419AOdRv7CyYSx6CiQdxGn9GCd7+oRtZMGpbyFN4CPlJiZSg9TOc23AUVDeI2PvnmPEJlEsSG07CUJ7ktXo4j1Wp09tBkP3dARYO4hfNNHfjurBpzZtAkPk/jKxYiKSoIe441cB2F2IGKBnF5Zks/3t1VjTkzwiEW0bCUJ0pLVODrE010rw03QEWDuLxd312GxEeApCgp11EIS4L8RYgJCcDXJ2ghQ1dHRYO4NHVbL8qONmDubRF0/wUPN2uyAruPNMBosnAdhdhARYO4LIZh8H5pLWZNViDQT8R1HMIyuVSMkGAJvj15lesoxAYqGsRlHa3RQNdpwMwEBddRiJOkJyux67srtJChC6OiQVySvs+Mf+2tw9yZEeB70bDUeBEq84UsQISDVde4jkKGwWrRKCkpwfz585GVlYUtW7bc1F5dXY0lS5YgOzsbq1evhtk8cOVERUUFlixZgoULF+KRRx5BUxOtuz/e7DxwARND/BEh9+M6CnGy9GQlSsov0dGGi2KtaKjVahQWFmLr1q0oLi7Gtm3bUF9fP+g1+fn5WLt2LXbv3g2GYbB9+3br8y+88AKKi4uhUqnw/PPPsxWTuKBGTTcOnW7GT1JCuY5COBAu90OgrzcOnW7mOgoZAmtFo7y8HOnp6ZBKpZBIJMjOzkZpaam1vampCQaDAampqQCAxYsXo7S0FEajEb///e+RlJQEAEhMTMS1a3SoOl4wDIMPymqRMTUEEh8h13EIR9KTQ/DZwYt0tOGCWCsaGo0Gcrnc+lihUECtVg/bLpfLoVar4e3tjYULFwIA+vv78eabb2Lu3LlsxSQu5ki1Bl29JkyPncB1FMKhSIUfAuhowyWxNr2WYZibnrvxOvuR2o1GI1atWgWz2Yzf/e53o+pbJnOtcXC53J/T/pu/X9yP6xwj8QsQ4+P95/HgPfEIDvblOs4gAsHA31dSqYS9PtTX+7DVnyMzOONzjVXW7InY+U097p8TDwF/bH/fOuM77y77ly2j+Z3JWtFQKpU4duyY9bFGo4FCoRjU3tLSYn2s1Wqt7T09PfjP//xPSKVSbNq0CULh6IYpdLpu9PffXJS4IJf7Q6vt4jSDyThwgQHXOWyRy/3xXnEVwmQSBIoFaG93raWyzeaBYRI2c93Yx3D9SaUSh2ZwxucaK6lYAH+xEDv3ncNPx7DmmLP2PXfYv2yRy/2h03XbXThYG57KyMjAoUOH0NraCr1ej7KyMmRmZlrbw8PDIRKJUFFRAQAoKiqytufn5yM6OhobNmyAt7c3WxGJC7mq7cY3J68iczrdJ4NclzElBCXll2Ay07kNV8HqkUZeXh5yc3NhMpnwwAMPICUlBcuXL8fKlSsxbdo0FBQUYM2aNejp6UFycjJyc3Nx9uxZ7Nu3D3FxcVi0aBGAgfMhmzdvZisqcQF/31mFWUkK+Inp5De5LmyCL2QBPvimsglz0yK5jkPAYtEAAJVKBZVKNei5G3/5JyUlYceOHYPak5OTUVtby2Ys4mIq61vQqOnCsqwErqMQF3TntBDs/PYCfjI9DCIhn+s44x7NCCecMpkt2LrnHOZnxIA/xpOdxLMpgyQIl/thL91vwyXQXko49eXhKwgOECEhKojrKMSFZUwNQenhK+gxmLiOMu5R0SCcaenQo+xoA+ak0t34iG2yAB/EhQfiy+8ucx1l3KOiQTizdc853BYvp2XPiV3umBKC/Seuoq2rj+so4xoVDcKJyroWNGi6MWsyLXtO7BPg641pk4JRdOAC11HGNSoaxOn6TBZ8UFaLn82MGPNMXzI+zU5W4vg5LZpaeriOMm7RHkucbue3FxAm88XEkACuoxA34+MtwKzJSmz/qo7rKOMWFQ3iVJeaO1F+uhlzZtDMbzI2M+InoFHbgzOXWrmOMi5R0SBOY7b0453Pq3H39DBa9pyMmYDvhczpYfjX3nMus8bceEJFgzhN8b8vQuIjQPJEmpNBbk1CRCAEfC98c5Lu6ulsVDSIU5xv6sD+yqvISosctAQ+IWPB4/EwZ0Y4dn57Ed16mvDnTFQ0COt6DWb8rfg0smZG0IKExGGUQRLERwTi02/Pcx1lXKGiQVjFMAz++WU1okL8kRAp5ToO8TB3TQvFsRotLjV3ch1l3KCiQVi1+2gDmlp68NPptFQIcTyxSICfpITi/76spZPiTkJFg7DmzMVWfHnoMu6/MwZCAX3VCDumxgSDYRh8dbyR6yjjAu3JhBWXm7vwt+LTWJAxEYG+dPdFwh4ej4es2yNR9O+LaOnQcx3H41HRIA7XpO1G4fZKzJ0ZgUiF/TesJ2SsZAE+SEuU471dNWAYGqZiExUN4lCXm7vwyr9O4O7UMCTSPTKIE92epER7dx/2n6C5G2yiokEc5miNBgUfncDPbovA5OhgruOQcYbvxcN9s6PwybcXoG7r5TqOx2K1aJSUlGD+/PnIysrCli1bbmqvrq7GkiVLkJ2djdWrV8NsNg9q37BhA9544w02IxIH6Nab8PbnZ/HR3josuTuWLq0lnJkQKEbGlBBsKjoNk7mf6zgeibWioVarUVhYiK1bt6K4uBjbtm1DfX39oNfk5+dj7dq12L17NxiGwfbt2wEAXV1dePrpp/Huu++yFY9gYA5FW1cf6hs7cOZiK2qvtKFB040eg8mucWFdhwE7D1zAqr8fgsFowSP3JiIkWOKE5IQMb0b8BIiEfPzfF2e4juKRBGz94PLycqSnp0MqlQIAsrOzUVpaiieeeAIA0NTUBIPBgNTUVADA4sWL8frrr+Ohhx7Cvn37MHHiRPz6179mK964Vt/UgW8rm1BZrwPDMAjyF0Eo4KO/n4G+z4yOHiN4PEAhFUMuFUMW6AN/iRACvhf6TBboOgy4cK0TrZ19SIqS4uG5CQjyp7vvEdfA4/Fw76wobNlbh/BgCdKS6EZfjsRa0dBoNJDL5dbHCoUCp06dGrZdLpdDrVYDABYtWgQAYx6akslc64odudyf0/6bvQf+N/daGGz65BSadT2YlRyC3/18GmSB4ptezzAMeg1m6DoMaO3Uo7PHCG1HHywMAyHfC9JAMVSxcoTJfR16EyWp1HWPUgTfzzNhM6NAfb0PW/05MoMzPhcXpACWZiXggy+rMSVejigW793yw/7F9X5+K0bzO5O1ojHU8MaNC9WN1H4rdLpul5kdKpf7Q6vt4jSD0WhGa6cBL7xxABlTQ3Df7ZHw8uIBDIP29uFPGAb48BHgM/yXqbvL4LCMUqnEZhaumb8fH2cz4419DNefo7eTMz4XVyIU/shMCcW6fxzCukfS4C9hZ76QyThwLpbr/Xys5HJ/6HTddhcO1s5pKJVKtLS0WB9rNBooFIph27Va7aB24hh9JguuanvQ2WvCsnmJmBEvHygYhIwDU2JkSIgIxIYdp9BnsnAdxyOwVjQyMjJw6NAhtLa2Qq/Xo6ysDJmZmdb28PBwiEQiVFRUAACKiooGtZNb12Mw4dV/nQADBgqpGAE0M5uMQ3dNC4XYW4CNO6tgttAVVbeK1SONvLw85ObmYtGiRViwYAFSUlKwfPlyVFVVAQAKCgqwfv163HfffdDr9cjNzWUrzrjTazDh1a0nEOwvQrC/D+gWFmS84vF4uHd2FHr7zPjHZ2dg6afCcStYO6cBACqVCiqVatBzmzdvtv47KSkJO3bsGPb9K1asYC2bJ+szWvDatpOQB4kxZ0Y4cJrrRIRwi+/Fw/0ZMSj690X847OzWK5KduhFHOMJbTUPY+nvx8aiKviJBbhnRjjdJY+Q7wkFXlh0Vwxauwx489MqGOkcx5hQ0fAgDMPgw7Jz6NGbMe/2KCoYhPyIUOCFRXfGwGzpxyv/OoGuXiPXkdwOFQ0PsudYI6ovtUF150Tw6QopQobE53shJz0ayiAx/vx/x9Ck7eY6kluhouEhTl/Q4YtDl/Dzn8RAJORzHYcQl8bj8fCTlDDMnqzAS1uO42iNhutIboPVE+HEOa7pevCPkrO4/86JCPSj5TwIsdeUGBlkgWJ8tK8ONVfasPSeOAgF9EeXLXSk4eZ6DCb89eNT+ElKKCLkrrV8CiHuICRYgmXzEnCtpQfP/fMYGmm4yiYqGm7M0t+PjTtPIzrEH9MmybiOQ4jb8vEWQJUxESmxMry85Th2fXfZZZYicjU0POXGtu6tQ5/Rgpz0aK6jEOL2eDwepk2SIVLhh91HrqCiVoPfLEhGqMyX62guhY403NTeYw04fUEHVcZEWkuKEAeS+onwizlxiAsPxAsfVOCzgxdp+ZEb0JGGGzpxTouS8kv41c/iIfKmk3aEOBqPx8OMeDliwwKxp6IBR6rV+PX8yYgNC+Q6GufoSMPN1DW2491d1Vh01yRI6UopQlgV4OuNxT+ZhNvi5djw8Sm8v7sGvQbzyG/0YFQ03Mjl5i688UkVctKjESrzrJvmEOKqeDwekicG49f3JaGtsw+rN3+HozUau26J7IloeMpNXG7uwl+2VeJnMyMwMZS9u5ARQoYmFgmQPSsKDZpu7Nh/Ht9UNmFZdiLXsZyOjjTcQH1TB177vmAkRkq5jkPIuBap8ENudiIU0oFlSFo6DBhPV+dS0XBxFbVabPj4JO6dFYkEKhiEuAS+Fw+zJiuROy8R+j4zLl7rxLFxMmRFw1Muqr+fQfG/L+Kbk1exODOWzmEQ4oICfL3BC/SBwWjBR9+cR9nRBvxqbjxiPHgImYqGC2rp0GPzZ2dhNFuwLCsBvmIh15EIITb4ePOxbF4iTl/U4a8fn0R8RCAWZ8YibILnTQykouFCzJZ+lB1twK7vLuP2JAVuT1TQxD1C3ISXFw8psRMwOToYJ+q0ePHDCiRHB2FBxkREKf25jucwVDRcgMncj+/ONKP44EUE+/vg4bkJCPKnORiEuCOhwAuzJisxPW4CTta34LVtlQib4Iu5MyMwPW6C299mltWiUVJSgk2bNsFkMuHRRx/Fww8/PKi9uroaa9asQXd3N9LS0vDss89CIBDg6tWryM/Ph06nQ0xMDAoKCuDr61mHeQzD4GpLDw6ebsbBqmtQSMXIvj0KkQpaqZYQTyAS8jFrshIzE+SoaWjHZwcv4f3dtZg1WYFZk5WIDQ+ElxveXZO1oqFWq1FYWIhPP/0U3t7eWLp0KWbPno24uDjra/Lz8/H8888jNTUVTz/9NLZv346HHnoIzz77LB566CHk5OTgrbfewsaNG5Gfn89WVKdgGAZtXX24cLUTNVfaUHVBB6OpH0nRQfjFT+MgC/ThOiIhhAV8vhemTAzGlInBaO0yoPpSG975ohq9BjOmxARhcnQw4sIDESKTuEURYa1olJeXIz09HVKpFACQnZ2N0tJSPPHEEwCApqYmGAwGpKamAgAWL16M119/HQ8++CCOHj2Kt956y/r8f/zHf4yqaDj7PEB/fz/6TP3Q95mh77OgR29Cl96I9m4juvvMaFR3Q9vWCwCQB0kQGizGA3fHQRYocsp9vHnBQQAAxoXXqRIKvFx6Ha3Q0BAAYDVjkDjQ2sdw/Tl6Oznjc3HFWd+p0exfoTJfhMp8cc/MCHT1GtGg7UF9YwcOnm6Gvs8MhVQMRZAYcqkPpP4iBEi84S/xhsRHAIlIAL4Xj5XfGaP5ncla0dBoNJDL5dbHCoUCp06dGrZdLpdDrVajra0Nfn5+EAgEg54fjaAgzxrKumUpT3GdwO3t+nwn633MSvkvp/bnzH48mgfsX6P5ncnaGZmhJrncWCGHax/pfYQQQrjDWtFQKpVoaWmxPtZoNFAoFMO2a7VaKBQKBAcHo7u7GxaLZdDzhBBCuMda0cjIyMChQ4fQ2toKvV6PsrIyZGZmWtvDw8MhEolQUVEBACgqKkJmZiaEQiHS0tKwa9euQc8TQgjhHo9hcbGUkpIS/P3vf4fJZMIDDzyA5cuXY/ny5Vi5ciWmTZuGmpoarFmzBj09PUhOTsb69evh7e2NpqYmrFq1CjqdDqGhofjLX/6CwEC6+QkhhHCN1aJBCCHEs7j31ERCCCFORUWDEEKI3ahoEEIIsRsVDUIIIXajosGikpISzJ8/H1lZWdiyZQvXcVxKd3c3FixYgMbGRgADy86oVCrMmzcPhYWFHKdzHW+++SZycnKQk5ODV155BQBtq6Fs2LAB8+fPR05ODt577z0AtJ1sefnll7Fq1SoAAwvHLlmyBNnZ2Vi9ejXMZrPtNzOEFc3NzcycOXOYtrY2pqenh1GpVExdXR3XsVxCZWUls2DBAmbKlClMQ0MDo9frmbvvvpu5cuUKYzKZmMcee4zZv38/1zE5d/DgQeaXv/wl09fXxxiNRiY3N5cpKSmhbfUjhw8fZpYuXcqYTCZGr9czc+bMYaqrq2k7DaO8vJyZPXs288c//pFhGIbJyclhTpw4wTAMwzz11FPMli1bbL6fjjRYcuOCjRKJxLpgIwG2b9+OP/3pT9aZ/qdOnUJ0dDQiIyMhEAigUqloW2Fg3bVVq1bB29sbQqEQsbGxuHTpEm2rH5k1axbef/99CAQC6HQ6WCwWdHZ20nYaQnt7OwoLC/H4448DGHrh2JG2ExUNlgy1YONoF170VC+88ALS0tKsj2lbDS0+Pt66M1+6dAm7du0Cj8ejbTUEoVCI119/HTk5ObjjjjvoOzWMdevWIS8vDwEBA/cwH27hWFuoaLCEoYUX7Ubbyra6ujo89thj+OMf/4ioqKib2mlbDVi5ciUOHTqEa9eu4dKlSze1j/ft9PHHHyM0NBR33HGH9bmx7Ht0u1eWKJVKHDt2zPr4xws2kutGWtxyPKuoqMDKlSvx9NNPIycnB0eOHKFt9SPnz5+H0WjE5MmTIRaLMW/ePJSWloLPv35/C9pOwK5du6DVarFw4UJ0dHSgt7cXPB5vyIVjbaEjDZaMtGAjuW769Om4ePEiLl++DIvFgs8//5y2FYBr167hv//7v1FQUICcnBwAtK2G0tjYiDVr1sBoNMJoNGLfvn1YunQpbacfee+99/D555+juLgYK1euxD333IP169cPuXCsLXSkwRKlUom8vDzk5uZaF2xMSUnhOpZLEolEeOmll7BixQr09fXh7rvvxr333st1LM6988476Ovrw0svvWR9bunSpbStfuTuu+/GyZMnsWjRIvD5fMybNw85OTkIDg6m7WSHgoKCQQvH5ubm2nw9LVhICCHEbjQ8RQghxG5UNAghhNiNigYhhBC7UdEghBBiNyoahBBC7EZFg5Bb8Nhjj6G1tZXrGIQ4DRUNQm7BwYMHuY5AiFPR5D5Cxuipp54CADzyyCP429/+hhdffBHXrl2DyWRCTk4OHn/8cTQ2NuKRRx5Beno6KisrYTab8eSTT2Lbtm24cOECpk6dir/85S+4evUqli1bhlmzZqGmpgYMw2DdunWDFnYkxCWwt2o7IZ4vISGB0el0zLJly5h9+/YxDMMwBoOBWbZsGfPFF18wDQ0NTEJCArN3716GYRhm3bp1zJw5c5iuri7GYDAwd955J1NRUWF93WeffcYwDMPs37+fufPOOxmj0cjZZyNkKHSkQcgt0uv1OHr0KDo6OrBhwwYAQG9vL2pqapCSkgKhUIh77rkHABAVFYUZM2bAz88PwMCS3R0dHVAoFAgMDIRKpQIwsDQGn89HbW0tpk6dys0HI2QIVDQIuUU8Hg8Mw+Cjjz6CWCwGALS2tkIkEqGtrQ1CoXDQctNCoXDIn3PjqqwA0N/ff9NzhHCNToQTcgv4fD4EAgFSU1Ot96bu7OzEr371K+zbt29UP6u1tRXffvstAOCrr76CUChEQkKCwzMTcivoSIOQW5CVlYWHHnoIGzduxGuvvQaVSgWj0YgFCxbg/vvvR2Njo90/SyQSobi4GAUFBfDx8cFbb71FRxrE5dAqt4S4gMbGRqhUKpw4cYLrKITYRMNThBBC7EZHGoQQQuxGRxqEEELsRkWDEEKI3ahoEEIIsRsVDUIIIXajokEIIcRuVDQIIYTY7f8BQfr7APxQTM8AAAAASUVORK5CYII=",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"sns.set(color_codes=True)\n",
"sns.kdeplot(data['temp'], shade=True)\n",
"\n",
"# Agrega lineas verticales en los indicadores de la tendencia central\n",
"plt.axvline(data['temp'].mean(), color='g') # Agrega una línea color verde, la cual indica el promedio\n",
"plt.axvline(data['temp'].median(), color='black') # Agrega una línea color negro, la cual indica la mediana\n",
"plt.axvline(data_description['temp']['25%'], color='black') # Agrega una línea color negro, la cual indica el Q1\n",
"plt.axvline(data_description['temp']['75%'], color='black') # Agrega una línea color negro, la cual indica el Q3\n",
"\n",
"IQR = data_description['temp']['75%'] - data_description['temp']['25%']\n",
"\n",
"upper_outliers = data_description['temp']['75%'] + 1.5*IQR\n",
"lower_outliers = data_description['temp']['25%'] - 1.5*IQR\n",
"\n",
"# Agrega dos líneas de color rojo, las cuales indican los límites para los valores atípicos\n",
"plt.axvline(upper_outliers, color='r') \n",
"plt.axvline(lower_outliers, color='r')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Indicadores de tendencia central \n",
"\n",
"\n",
"Los indicadores que son sirven para medir la tendencia central son:\n",
"\n",
"- **Media**"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"18.88916827852998, 18.88916827852998, 18.88916827852998\n"
]
}
],
"source": [
"from statistics import mean\n",
"\n",
"a1 = data['temp'].mean() # utilizando la librería pandas\n",
"a2 = mean(data['temp']) # utilizando la librería statistics\n",
"a3 = np.mean(data['temp']) # utilizando la librería numpy\n",
"\n",
"print(f'{a1}, {a2}, {a3}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Mediana**"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"19.3, 19.3, 19.3\n"
]
}
],
"source": [
"from statistics import median\n",
"\n",
"a1 = data['temp'].median() # pandas\n",
"a2 = median(data['temp']) # statistics\n",
"a3 = np.median(data['temp']) # numpy\n",
"\n",
"print(f'{a1}, {a2}, {a3}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Cuantiles**\n",
"\n",
"Son valores que dividen a los datos en cuatro partes iguales.\n",
"\n",
" - 1er cuantil (Q1) \t25% de los datos es menor que o igual a este valor.\n",
" - 2do cuantil (Q2) \tLa mediana. 50% de los datos es menor que o igual a este valor.\n",
" - 3er cuantil (Q3) \t75% de los datos es menor que o igual a este valor. \n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Indicadores de dispersión\n",
"\n",
"\n",
"Estos indicares muestran cuan dispersos están los datos.\n",
"\n",
"- **Varianza, desviación estándar**\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Desviación estándar: 5.806625349573505, 5.806625349573505, 5.801006939598366\n",
"Varianza: 33.71689795030963, 33.71689795030963, 33.65168151326841\n"
]
}
],
"source": [
"from statistics import stdev\n",
"from statistics import variance\n",
"\n",
"std1 = data['temp'].std() # pandas\n",
"std2 = stdev(data['temp']) # statistics\n",
"std3 = np.std(data['temp']) # numpy\n",
"\n",
"varianza1 = data['temp'].var() # pandas\n",
"varianza2 = variance(data['temp']) # statistics\n",
"varianza3 = np.var(data['temp']) # numpy\n",
"\n",
"print(f'Desviación estándar: {std1}, {std2}, {std3}')\n",
"print(f'Varianza: {varianza1}, {varianza2}, {varianza3}')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Valores atípicos**\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Asimetría (skweness). Grado de simetría de la distribución.**\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.331172237347285 -0.3302106140354586\n"
]
}
],
"source": [
"from scipy.stats import skew\n",
"\n",
"a1 = data['temp'].skew() # pandas\n",
"a2 = skew(data['temp']) # scipy\n",
"\n",
"print(a1, a2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Curtosis. Indicador de la \"anchura\" de una distribución**\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1361655076587991 0.12326917606611909\n"
]
}
],
"source": [
"from scipy.stats import kurtosis\n",
"\n",
"a1 = data['temp'].kurt() # pandas\n",
"a2 = kurtosis(data['temp']) # scipy\n",
"\n",
"print(a1, a2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Gráficos de distribución\n",
"\n",
"\n",
"Para visualizar los gráficos, se puede utilizar, en vez de librerias externas como en el ejemplo de arriba, la librería *pandas*. __[Panda's Plots](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.plot.html)__ \n",
"\n",
"- **[Histograma](https://es.wikipedia.org/wiki/Histograma)**\n",
"\n",
"Permite visualizar las frecuencias de diferentes categorías o rangos de valores (clases o bins)\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEJCAYAAAByupuRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAec0lEQVR4nO3de1BU590H8O/ZCxSCBqG7lLHEMWq0uXlJq6KBfZmOiMKKF2qJNozRGJ0oKm2ixmLSqFGCTI2OmtrEJl5iEqKYIEHUmgm5oFI1Gk1RMyp47YLwKqKwrLvP+0febKPiclj27IXz/cw4s5fz7Pk9PHv87rlLQggBIiJSJY2vCyAiIt9hCBARqRhDgIhIxRgCREQqxhAgIlIxhgARkYoxBMjv9O7dG3V1dbe9VlBQgGnTpgEAVq5ciY8//tjlZ6xevRr//Oc/lSpRMR9//DFSU1ORmpqKgQMHIi4uzvn84MGDvi6POiCdrwsgaqvZs2e3Os2BAwfQs2dPL1TjWaNHj8bo0aMBAPPnz0evXr0wZcoU3xZFHRpDgALOT/9zXLVqFfbs2QO9Xo8uXbpg2bJl2LNnD44fP47c3FxotVoMHjwYr776Kk6cOAFJkhAXF4c//vGP0Ol0KC0tRV5eHjQaDX71q1+hrKwMW7ZsQXl5ObZu3YrGxkaEhYVh3bp1+Mtf/oLKykpcu3YN9913H/Ly8vDggw/i6aefxiOPPIL9+/ejtrYWGRkZqK2tRXl5ORobG/HGG2+gd+/eOHLkCJYvX47m5mbU1NRgyJAhWLp0qex+Hz58GHl5eWhsbIQkScjMzERCQgIKCgqwe/duNDU14eLFi4iOjsbEiROxefNmVFZW4plnnsHkyZNRUFCATz/9FA6HAxaLBVFRUcjJyUFUVJSCo0V+TxD5mYceekikpKSIUaNGOf+ZTCbx3HPPCSGEmDdvnnj77bfFpUuXxIABA4TVahVCCLF+/XqxZ88eIYQQf/jDH8TOnTuFEELMnTtXLF68WDgcDmG1WsXkyZPFunXrRF1dnRg4cKCoqKgQQghRUFAgHnroIXH+/Hmxbds28Zvf/EZcv35dCCHEzp07xeLFi501Lly4UCxatMg5r5kzZwohhDhy5Ih46KGHxN69e4UQQrz22msiOztbCCFEVlaW2L9/vxBCiIaGBjFo0CBx7Nixe/4dfuynEEJcvXpVJCYmivPnzwshhPjPf/4j4uPjxcWLF8W2bdvEE088IS5duiTsdrsYOXKkyMzMFHa7XVRUVIjHHntM2O12sW3bNtGvXz9x5swZIYQQy5cvF5mZme4PFHUIXBMgv7RhwwZEREQ4nxcUFGDXrl23TRMVFYU+ffpgzJgxiI+PR3x8PGJjY+/6rC+++ALvv/8+JElCUFAQ0tPTsWHDBnTv3h09evRAnz59AABjxozBkiVLnO169+6NsLAwAEBSUhJiYmKwadMmVFVVoby8HP3793dOO2zYMABATEwMACAuLg4A8MADD6C8vBwAkJOTgy+++AJ/+9vfcObMGTQ1NeHmzZuy/h5HjhxBTU0NZsyY4XxNkiScPHkSAPDYY48hOjoaAPDLX/4STz75JDQaDWJiYmC1WtHY2AgAGDp0KLp37w4AGD9+PFJTU2XNnzouhgAFLI1Gg82bN+PYsWPYt28fli5dikGDBiE7O/u26RwOx13Pb926Ba1WC3HHpbM0mv8eKxEaGup8vGXLFuTn52PixIkwm80IDw/HhQsXnO8HBQXd9jl6vf6ueidOnIg+ffogLi4OI0aMwNGjR++a/73Y7Xb06NEDH330kfM1i8WCiIgI7Nix467563QtL9pardb52OFw3Pac1IlHB1HAOnHiBFJSUtCjRw9MmzYNkyZNcv4y1mq1uHXrFgDgySefxHvvvQchBJqbm5Gfn48hQ4ZgwIABqKysxIkTJwAAu3btQn19PSRJumteX331FcaMGYPf/e536N69Oz777DPY7XbZtV67dg3Hjx/HCy+8gMTERFgsFpw7d+6ugLqXfv36oaqqCv/6178AABUVFRg+fDiqq6tl1wAA+/fvh8ViAQB88MEHSEhIaFN76ni4JkABq0+fPhgxYgTGjRuH0NBQ/OxnP3OuBSQkJOD111+HzWZDdnY2lixZArPZDJvNhri4OEyfPh1BQUH461//innz5kGj0eDRRx+FTqdDSEjIXfOaPHkyXn75ZRQUFECr1eKRRx7BqVOnZNd6//3347nnnsOYMWMQHh6OLl26YMCAAaiqqmpxE9adIiIisGrVKuTm5sJqtUIIgdzcXHTt2lX+Hww/bEJ78cUXUVNTg549e2LRokVtak8djyTkro8SdTANDQ1Yu3YtMjMzERISgu+++w7Tpk3Dl19+2eLaQKD7cb/KunXrfF0K+RGuCZBqhYWFQa/XIy0tDTqdDjqdDm+88UaHDACie+GaABGRinHHMBGRijEEiIhUjCFARKRiDAEiIhULuKOD/vd/b8Dh8P992ZGRYaitbfB1Ge3CPvheoNcPsA++ptFI6NLlvnu+H3Ah4HCIgAgBAAFTpyvsg+8Fev0A++DPuDmIiEjFGAJERCrGECAiUjGGABGRijEEiIhUjCFARKRiDAEiIhULuPMEiDqizuGhCNa3fKtHg6GTy7ZWmx31V+Xdq5joTgwBIj8QrNdiavFht9q+NXKAh6shNeHmICIiFeOaAJEHuNqcQ+TPGAJEHtCezTkAN+mQ73BzEBGRijEEiIhUjCFARKRiDAEiIhVjCBARqZiiIfDZZ59h7NixSEpKwpIlSwAAZWVlMJvNSExMxIoVK5ScPRERtUKxEDh//jxeeeUVrF27Fjt27MC///1vlJaWYsGCBVi7di2Ki4tx/PhxlJaWKlUCERG1QrEQ2LNnD0aOHIlf/OIX0Ov1WLFiBUJCQtCtWzfExMRAp9PBbDajpKREqRKIiKgVip0sVlVVBb1ejylTpqCmpgYJCQno1asXDAaDcxqj0QiLxdKmz42MDPN0qYpp7cJfgYB9CAz+3kd/r0+OjtCHligWAna7HQcPHsSmTZsQGhqK559/HiEhIXdNJ0lSmz63trYBDofwVJmKMRg6oabmuq/LaBf2oW3z8SV/Hid+j3xLo5Fc/nhWLAR+/vOfIzY2FhEREQCA3/72tygpKYFW+9/rq1RXV8NoNCpVAhERtUKxfQIJCQn46quvUF9fD7vdji+//BJJSUk4e/YsqqqqYLfbUVRUhPj4eKVKICKiVii2JtC3b188++yzmDBhAmw2G4YOHYqnnnoKDz74IDIzM2G1WmEymZCUlKRUCURE1ApFryKalpaGtLS0216LjY1FYWGhkrMlIiKZeMYwEZGKMQSIiFSMIUBEpGIMASIiFWMIEBGpGEOAiEjFGAJERCrGECAiUjGGABGRijEEiIhUjCFARKRiDAEiIhVjCBARqRhDgIhIxRS9lDRRIOkcHopgvbb1Cf2Mze5w+/aWVpsd9VdvergiCiQMAaL/F6zXYmrxYbfavjVygIerkU+v1QRk3eQfuDmIiEjFGAJERCrGECAiUjGGABGRijEEiIhUjCFARKRiDAEiIhVT9DyBjIwM1NbWQqf7YTaLFi3CuXPn8Oabb8Jms2HSpEmYOHGikiUQEZELioWAEAJnzpzB559/7gwBi8WCrKwsFBQUICgoCOnp6Rg0aBB69uypVBlEROSCYiFw5swZSJKEqVOnora2FuPHj8d9992HwYMHIzw8HAAwfPhwlJSUYObMmUqVQURELii2T6C+vh6xsbFYs2YN3n33XXzwwQe4dOkSDAaDcxqj0QiLxaJUCURE1ArF1gT69++P/v37AwBCQ0ORlpaGZcuWYfr06bdNJ0lSmz43MjLMYzUqzd2LevkT9qHj88bfpyOMQUfoQ0sUC4GDBw/CZrMhNjYWwA/7CLp27YorV644p6murobRaGzT59bWNsDhEB6tVQkGQyfU1Fz3dRntorY+dNSFvDVKj7Havkf+RqORXP54Vmxz0PXr15Gbmwur1YqGhgZs374dy5cvx759+1BXV4fGxkbs3r0b8fHxSpVAREStUGxNICEhAUePHsXo0aPhcDgwYcIEPPHEE8jKykJGRgZsNhvS0tLw+OOPK1UCERG1QtHzBObMmYM5c+bc9prZbIbZbFZytkREJBPPGCYiUjGGABGRijEEiIhUjCFARKRiDAEiIhVjCBARqRhDgIhIxRgCREQqxhAgIlIxhgARkYoxBIiIVEzRawcRkX+z2R1uX0LbarOj/upND1dE3sYQIFIxvVaDqcWH3Wr71sgBHq6GfIGbg4iIVIwhQESkYgwBIiIVYwgQEakYQ4CISMUYAkREKsYQICJSMYYAEZGKyQqBTZs2oaGhQelaiIjIy2SFwKlTpzB8+HD8+c9/xrFjx5SuiYiIvERWCCxevBi7du3Co48+ildffRXjxo3D1q1bYbVaW237+uuvY/78+QCAiooKjBs3zhkot27dal/1RETULrL3CYSFhSEpKQkpKSm4evUqtmzZgqSkJJSUlNyzzb59+7B9+3bn8xdffBELFy7Erl27IIRAfn5++6onIqJ2kRUCZWVlmDNnDpKSknDmzBmsWbMGBQUF2LBhA5YsWdJim6tXr2LFihWYPn06AODixYtoampCv379AABjx451GSBERKQ8WVcRXbRoESZMmIDFixejU6f/Xnb2gQcewPjx41ts8/LLLyMrKwuXL18GAFRXV8NgMDjfNxgMsFgs7amdiIjaSVYIFBYWoqSkBJ06dUJNTQ0+/fRTZGRkQKPRYNasWXdN/9FHHyE6OhqxsbEoKCgAAAgh7ppOkqQ2FxwZGdbmNr7i7nXa/Qn7QK7I/dt2hDHoCH1oiawQWLx4MW7cuIFRo0ZBo9Hg0KFDuHDhArKzs1ucvri4GDU1NUhNTcW1a9dw8+ZNSJKEK1euOKepqamB0Whsc8G1tQ1wOO4OFH9jMHRCTc11X5fRLmrrQ0ddyJUk52+rtu+Rv9FoJJc/nmWFwDfffIOioiIAQGRkJFauXInU1NR7Tv/OO+84HxcUFKC8vBzLli1DSkoKDh06hCeeeAIff/wx4uPj5faDiIgUICsEbDYbmpubERQUBABuH9qZl5eH7Oxs3LhxAw8//DAyMjLc+hwiIvIMWSHwP//zP5gyZQpSU1MhSRKKiopgMplkzWDs2LEYO3YsAKBPnz7YunWr+9USEZFHyQqBuXPn4r333sPevXuh0+kwbNgwpKenK10bEREpTFYIaLVaZGRkcPMN+b3O4aEI1mtve407fInuTVYIFBcXIy8vD9euXbvtUM/Dhw8rVhiRO4L1Wkwtdu97+dbIAR6uhsj/yQqBlStXYv78+Xj44YfdOrafiIj8k6wQ6Ny5MxITE5WuhYiIvEzWtYP69u2L0tJSpWshIiIvk7UmUFpais2bN0Ov10Ov10MIAUmSuE+AiCjAyQqBd999V+EyiIjIF2RtDuratSuOHTuG/Px8RERE4JtvvkHXrl2Vro2IiBQmKwT+/ve/4/3330dJSQmampqwevVqrFmzRunaiIhIYbJC4NNPP8Vbb72FkJAQdOnSBfn5+c4LyhERUeCSFQI6nc558Tjgh0NGdTpZuxOIiMiPyfqfPDo6Gp9//jkkSUJzczPWr1/PfQJERB2ArBBYuHAh5s6di5MnT6Jfv37o27cv8vLylK6NiIgUJisEoqKisGHDBjQ2NsJutyMsLHBu8UhEyrDZHe26vaTVZkf91ZueLovaSFYI/PROYT/1zDPPeLQYIgoceq3G7Yv1Abxgn7+QFQKnTp1yPm5ubsahQ4cwaNAgxYoiIiLvkBUCy5Ytu+15XV0d5s6dq0hBRETkPbIOEb1TREQELl686OlaiIjIy9q8T0AIgePHjyMyMlKxooiIyDvavE8A+OG8AW4OIiIKfG7tEyAioo5BVgg8/fTTLm8ruXHjRo8VRERE3iMrBB599FGcPn0a48ePh16vxyeffIJbt24hOTlZ6fqIiEhBskLg8OHD2LJlC7RaLQAgLi4O48ePx/Dhw122W7lyJXbt2gVJkpCWloZnnnkGZWVlWLZsGaxWK0aMGIGsrKz294KIiNwiKwTq6urQ3NyMkJAQAMCNGzfQ1NTksk15eTn279+PwsJC3Lp1CyNHjkRsbCwWLFiATZs2ITo6GtOmTUNpaSlMJlP7e0JERG0mKwRSUlIwfvx4DBs2DEII7Ny5ExkZGS7bDBw4EBs3boROp4PFYoHdbkd9fT26deuGmJgYAIDZbEZJSQlDgIjIR2SFwOzZs/Hwww9j//79CA4OxqJFizBw4MBW2+n1eqxatQr/+Mc/kJSUhOrqahgMBuf7RqMRFoulTQVHRgbOxevkXlzLn3WEPpD/CqTvVyDV2hay7wwTFRWFXr16YezYsfjuu+9kz2DWrFmYOnUqpk+fjsrKyrved3XUUUtqaxvgcIg2tfEFg6ETamqu+7qMdgnEPnTUBbWjCpTvVyAuCz/SaCSXP55lXTZi27ZteOmll/D222/j+vXreP7555Gfn++yzenTp1FRUQEACAkJQWJiIg4cOIArV644p6murobRaJRTAhERKUBWCGzevBkffvghwsLCEBkZiYKCAmzYsMFlmwsXLiA7OxvNzc1obm7G3r17kZ6ejrNnz6Kqqgp2ux1FRUWIj4/3SEeIiKjtZG0O0mg0t91IJjo62nm46L2YTCYcPXoUo0ePhlarRWJiIpKTkxEREYHMzExYrVaYTCYkJSW1rwdEROQ2WSEQHh6OiooK5/b7wsJC3H///a22mzVrFmbNmnXba7GxsSgsLHSjVCIi8jRZIbBgwQLMnj0b586dw5NPPong4GCsXbtW6dqIiEhhskKgqakJn3zyCSorK2G329G9e3fo9XqlayOV6hweimC9682NROQZskLghRdewM6dO9GjRw+l6yFCsF7r9r1red9aoraRdXRQ7969sWPHDly6dAlXr151/iMiosAma01g7969KCkpue01SZKc5wEQEVFgkhUCx44dU7oOIiLyAZebgxYuXOh8XFdXp3gxRETkXS5D4Pjx487HU6ZMUbwYIiLyLpchIIRo8TEREXUMso4OAtp+tU8iIvJ/LncMOxwOXLt2DUII2O125+MfhYeHK10fEREpyGUInDp1CoMHD3b+xz9o0CDnezxElIgo8LkMgRMnTnirDiIi8gHZ+wSIiKjjkX17SVKXzuGhANy/XaPVZkf91ZueLImIFMAQoBa15yJuAC/kRhQouDmIiEjFGAJERCrGECAiUjGGABGRijEEiIhUjCFARKRiDAEiIhVT9DyB1atXY+fOnQAAk8mEuXPnoqysDMuWLYPVasWIESOQlZWlZAlE5KdsdgdPRvQDioVAWVkZvvrqK2zfvh2SJOHZZ59FUVER8vLysGnTJkRHR2PatGkoLS2FyWRSqgwi8lN6rcbtExJ5MqLnKLY5yGAwYP78+QgKCoJer0ePHj1QWVmJbt26ISYmBjqdDmaz+a4b2BMRkfcoFgK9evVCv379AACVlZUoLi6GJEkwGAzOaYxGIywWi1IlEBFRKxS/dtD333+PadOmYd68edDpdDh79uxt77f1jmWRkWGeLE9R7m7v7CjU3n9Slre/Xx31+6xoCBw6dAizZs3CggULkJycjPLycly5csX5fnV1NYxGY5s+s7a2AQ6H/9/v2GDohJqa674uw22e+MK72/+OurCRZ3lz+Qrk5VmjkVz+eFZsc9Dly5cxY8YM5OXlITk5GQDQt29fnD17FlVVVbDb7SgqKkJ8fLxSJRARUSsUWxNYv349rFYrcnJynK+lp6cjJycHmZmZsFqtMJlMSEpKUqoE8qH2HP5HRN6jWAhkZ2cjOzu7xfcKCwuVmi35CR7+RxQYeMYwEZGK8c5iRBRweLax5zAEiCjgcHOj53BzEBGRinFNQKbO4aEI1mvb1ObH1VWufhKRv2IIyBSs13L1k4g6HG4OIiJSMYYAEZGKMQSIiFSMIUBEpGIMASIiFWMIEBGpGEOAiEjFGAJERCrGECAiUjGGABGRijEEiIhUjCFARKRiDAEiIhVjCBARqRhDgIhIxRgCREQqxhAgIlIxxUOgoaEBKSkpuHDhAgCgrKwMZrMZiYmJWLFihdKzJyIiFxQNgaNHj+Kpp55CZWUlAKCpqQkLFizA2rVrUVxcjOPHj6O0tFTJEoiIyAVFQyA/Px+vvPIKjEYjAODbb79Ft27dEBMTA51OB7PZjJKSEiVLICIiFxS90fxrr7122/Pq6moYDAbnc6PRCIvFomQJRETkgqIhcCchxF2vSZLUps+IjAzzVDleZTB08nUJRPT/3FkeO+oy7NUQiIqKwpUrV5zPq6urnZuK5KqtbYDDcXeYKK29X4CamuseqsQ7OuoXngho+/JoMHQKuGX4RxqN5PLHs1cPEe3bty/Onj2Lqqoq2O12FBUVIT4+3pslEBHRT3h1TSA4OBg5OTnIzMyE1WqFyWRCUlKSN0sgIqKf8EoIfPbZZ87HsbGxKCws9MZsiYioFTxjmIhIxRgCREQqxhAgIlIxhgARkYoxBIiIVMyrh4hS23UOD0WwXutW22a7A0Fa5jyRp7RnebTa7Ki/etPDFbUfQ8DPBeu1mFp82K22b40c0K62RHS79i6P/og/E4mIVIxrAkSkKja7wycXkHN3vj9SanMSQ4CIVEWv1fhkk0575tveebvCzUFERCrGECAiUjGGABGRijEEiIhUjDuGvaC9RwUQESmFIeAFvjoagYioNdwcRESkYgwBIiIVYwgQEakYQ4CISMUYAkREKsYQICJSMYYAEZGKMQSIiFTMJyeL7dixA2+++SZsNhsmTZqEiRMnKj7P9twWjoioo/J6CFgsFqxYsQIFBQUICgpCeno6Bg0ahJ49eyo63/bcFg7gmbtE1DF5PQTKysowePBghIeHAwCGDx+OkpISzJw5U1Z7jUZye96RIUFut21ve7W19eW8A7GtL+fNPgdGW8C9//9aayMJIYS7Bblj3bp1uHnzJrKysgAAH330Eb799lssXrzYm2UQERF8sGO4pcyRJPd/3RMRkfu8HgJRUVG4cuWK83l1dTWMRqO3yyAiIvggBIYMGYJ9+/ahrq4OjY2N2L17N+Lj471dBhERwQc7hqOiopCVlYWMjAzYbDakpaXh8ccf93YZREQEH+wYJiIi/8EzhomIVIwhQESkYgwBIiIVYwgQEakYQ8DDMjIykJycjNTUVKSmpuLo0aO+Lkm2hoYGpKSk4MKFCwB+uMSH2WxGYmIiVqxY4ePq5LmzDy+99BISExOd47Fnzx4fV+ja6tWrkZycjOTkZOTm5gIIvHFoqQ+BNg4rV67EyJEjkZycjHfeeQdA4I2DbII8xuFwiKFDhwqbzebrUtrsyJEjIiUlRTzyyCPi/PnzorGxUZhMJnHu3Dlhs9nE5MmTxeeff+7rMl26sw9CCJGSkiIsFouPK5Pn66+/Fr///e+F1WoVzc3NIiMjQ+zYsSOgxqGlPuzevTugxuHAgQMiPT1d2Gw20djYKBISEkRFRUVAjUNbcE3Ag86cOQNJkjB16lSMGjUKmzdv9nVJsuXn5+OVV15xnr397bffolu3boiJiYFOp4PZbEZJSYmPq3Ttzj7cvHkTly5dwsKFC2E2m7Fq1So4HA4fV3lvBoMB8+fPR1BQEPR6PXr06IHKysqAGoeW+nDp0qWAGoeBAwdi48aN0Ol0qK2thd1uR319fUCNQ1swBDyovr4esbGxWLNmDd5991188MEH+Prrr31dliyvvfYafv3rXzufV1dXw2AwOJ8bjUZYLBZflCbbnX2ora3F4MGDsXTpUuTn5+PgwYPYunWrDyt0rVevXujXrx8AoLKyEsXFxZAkKaDGoaU+xMXFBdQ4AIBer8eqVauQnJyM2NjYgFwe5GIIeFD//v2Rm5uL0NBQREREIC0tDaWlpb4uyy2iA1zoLyYmBmvWrEFkZCRCQkLw9NNPB8R4fP/995g8eTLmzZuHBx544K73A2EcftqHBx98MCDHYdasWdi3bx8uX76MysrKu94PhHGQgyHgQQcPHsS+ffucz4UQ0Ol8cvO2dusIF/o7efIkdu3a5XweCONx6NAhTJo0CX/6058wZsyYgByHO/sQaONw+vRpVFRUAABCQkKQmJiIAwcOBNw4yMUQ8KDr168jNzcXVqsVDQ0N2L59O4YNG+brstzSt29fnD17FlVVVbDb7SgqKgq4C/0JIbB06VJcu3YNNpsNH374oV+Px+XLlzFjxgzk5eUhOTkZQOCNQ0t9CLRxuHDhArKzs9Hc3Izm5mbs3bsX6enpATUObeG/cRyAEhIScPToUYwePRoOhwMTJkxA//79fV2WW4KDg5GTk4PMzExYrVaYTCYkJSX5uqw26dOnD5577jk89dRTuHXrFhITE5GSkuLrsu5p/fr1sFqtyMnJcb6Wnp4eUONwrz4E0jiYTCbncqzVapGYmIjk5GREREQEzDi0BS8gR0SkYtwcRESkYgwBIiIVYwgQEakYQ4CISMUYAkREKsYQICJSMYYAEZGKMQSIiFTs/wCEjLCPl8+a7gAAAABJRU5ErkJggg==",
"text/plain": [
"